{$CLEO .qa}
{$USE CLEO+}
{$USE ini}

0000: NOP

script_name "ImGYMQ"

// By ArtemQa146

const
    Ped_sport_1 = 31@
    Ped_sport_2 = 30@
    select = 29@
    benchpress_obj = 28@
    run_obj = 27@
    mat_obj = 26@
    bike_obj = 25@
    render_obj = 0@
end


        0AAA: 2@ = get_script_struct_named 'GYMSF'
        0AAA: 3@ = get_script_struct_named 'GYMLS'
        0AAA: 4@ = get_script_struct_named 'GYMLV'
        if or
            2@ > 0
            3@ > 0
            4@ > 0
        then

            if or
                0EEA: locate_char_distance_to_coordinates $player_actor pos 767.8787 -34.9965 1000.6865 radius 50.0 // SF
                0EEA: locate_char_distance_to_coordinates $player_actor pos 766.3579 5.3199 1000.7181 radius 50.0 // LS
                0EEA: locate_char_distance_to_coordinates $player_actor pos 768.4371 -72.033 1000.6562 radius 50.0 // LV
            then
                repeat
                wait 0
                04ED: load_animation  "Freeweights"
                until 04EE:   animation "Freeweights" loaded

                repeat
                wait 0
                04ED: load_animation  "GYMNASIUM"
                until 04EE:   animation "GYMNASIUM" loaded

                repeat
                wait 0
                04ED: load_animation  "benchpress"
                until 04EE:   animation "benchpress" loaded
            
            
                model.Load(96)
                model.Load(184)
                model.Load(2631)
                model.Load(2627)
                model.Load(2629)
                model.Load(2630)
                model.Load(3071)
                model.Load(2913)
                if
                    not model.Available(96)
                then
                    repeat
                    wait 0
                    model.Load(96)
                    until model.Available(96)
                end
                if
                    not model.Available(184)
                then
                    repeat
                    wait 0
                    model.Load(184)
                    until model.Available(184)
                end
                if
                    not model.Available(2631)
                then
                    repeat
                    wait 0
                    model.Load(2631)
                    until model.Available(2631)
                end
                if
                    not model.Available(2627)
                then
                    repeat
                    wait 0
                    model.Load(2627)
                    until model.Available(2627)
                end
                if
                    not model.Available(2629)
                then
                    repeat
                    wait 0
                    model.Load(2629)
                    until model.Available(2629)
                end
                if
                    not model.Available(2630)
                then
                    repeat
                    wait 0
                    model.Load(2630)
                    until model.Available(2630)
                end
                if
                    not model.Available(3071)
                then
                    repeat
                    wait 0
                    model.Load(3071)
                    until model.Available(3071)
                end
                if
                    not model.Available(2913)
                then
                    repeat
                    wait 0
                    model.Load(2913)
                    until model.Available(2913)
                end
                038B: load_requested_models
                
                if 2@ > 0
                then 0AD3: 5@v = string_format "GYMSF" situation
                end
                if 3@ > 0
                then 0AD3: 5@v = string_format "GYMLS" situation
                end
                if 4@ > 0
                then 0AD3: 5@v = string_format "GYMLV" situation
                end

                if
                    2@ > 0
                then
                    077E: get_active_interior_to 1@

                    0209: select = random_int_in_ranges 1 5
                    if or
                        select == 3
                        select == 1
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 761.2142 -46.3 1000.5859
                        0173: set_actor Ped_sport_1 Z_angle_to 180.0
                    end
                    if or
                        select == 4
                        select == 2
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 769.6904 -50.2 1000.5859
                        0173: set_actor Ped_sport_1 Z_angle_to 90.0
                    end
                    0860: link_actor Ped_sport_1 to_interior 1@
                    0E24: fix_char Ped_sport_1 ground 1 brightness 1 and_fade_in 0

                    if or
                        select == 1
                        select == 4
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 756.264 -43.1017 1000.5859
                        0173: set_actor Ped_sport_2 Z_angle_to 180.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 34 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end
                    if or
                        select == 2
                        select == 3
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 763.7443 -47.3623 999.5859
                        0173: set_actor Ped_sport_2 Z_angle_to 180.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 2913 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end
                    0860: link_actor Ped_sport_2 to_interior 1@
                    0E24: fix_char Ped_sport_2 ground 1 brightness 1 and_fade_in 0
                
                    0E01: create_object_no_save 2629 at 763.7443 -48.3623 999.5859 offset 0 ground 0 to benchpress_obj
                    0177: set_object benchpress_obj Z_angle_to 180.0
                
                    0E01: create_object_no_save 2627 at 761.2142 -48.1 999.5859 offset 0 ground 0 to run_obj
                    0177: set_object run_obj Z_angle_to 180.0

                    0E01: create_object_no_save 2631 at 756.264 -43.1017 999.5859 offset 0 ground 0 to mat_obj
                    0177: set_object mat_obj Z_angle_to 90.0
                
                    0E01: create_object_no_save 2630 at 769.2594 -49.667 999.5859 offset 0 ground 0 to bike_obj
                    0177: set_object bike_obj Z_angle_to 270.0
                end
                
                if
                    3@ > 0
                then
                    077E: get_active_interior_to 1@

                    0209: select = random_int_in_ranges 1 5
                    if or
                        select == 3
                        select == 1
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 771.9 14.6938 1000.6954
                        0173: set_actor Ped_sport_1 Z_angle_to 270.0
                    end
                    if or
                        select == 4
                        select == 2
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 772.7 7.0088 1000.7109
                        0173: set_actor Ped_sport_1 Z_angle_to 90.0
                    end
                    0860: link_actor Ped_sport_1 to_interior 1@
                    0E24: fix_char Ped_sport_1 ground 1 brightness 1 and_fade_in 0

                    if or
                        select == 1
                        select == 4
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 773.0118 11.8165 1000.5859
                        0173: set_actor Ped_sport_2 Z_angle_to 90.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 34 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end
                    if or
                        select == 2
                        select == 3
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 772.9 3.1984 1000.718
                        0173: set_actor Ped_sport_2 Z_angle_to 270.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 2913 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end

                    0860: link_actor Ped_sport_2 to_interior 1@
                    0E24: fix_char Ped_sport_2 ground 1 brightness 1 and_fade_in 0

                    0E01: create_object_no_save 2629 at 773.8656 3.2395 999.6 offset 0 ground 0 to benchpress_obj
                    0177: set_object benchpress_obj Z_angle_to 270.0

                    0E01: create_object_no_save 2627 at 773.6754 14.7142 999.7945 offset 0 ground 0 to run_obj
                    0177: set_object run_obj Z_angle_to 270.0

                    0E01: create_object_no_save 2631 at 773.0118 11.8165 999.7859 offset 0 ground 0 to mat_obj
                    0177: set_object mat_obj Z_angle_to 180.0

                    0E01: create_object_no_save 2630 at 772.249 7.5368 999.7094 offset 0 ground 0 to bike_obj
                    0177: set_object bike_obj Z_angle_to 270.0
                end
                
                if
                    4@ > 0
                then
                    077E: get_active_interior_to 1@

                    0209: select = random_int_in_ranges 1 5
                    if or
                        select == 3
                        select == 1
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 761.3021 -68.3884 1000.6635
                        0173: set_actor Ped_sport_1 Z_angle_to 90.0
                    end
                    if or
                        select == 4
                        select == 2
                    then
                        009A: Ped_sport_1 = create_actor_pedtype 21 model 184 at 775.20 -71.45 1000.6484
                        0173: set_actor Ped_sport_1 Z_angle_to 90.0
                    end
                    0860: link_actor Ped_sport_1 to_interior 1@
                    0E24: fix_char Ped_sport_1 ground 1 brightness 1 and_fade_in 0
                    
                    if or
                        select == 1
                        select == 4
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 762.1722 -60.0817 1000.5859
                        0173: set_actor Ped_sport_2 Z_angle_to 180.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 3071 bone 34 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end
                    if or
                        select == 2
                        select == 3
                    then
                        009A: Ped_sport_2 = create_actor_pedtype 21 model 96 at 760.3129 -71.4818 1000.6548
                        0173: set_actor Ped_sport_2 Z_angle_to 90.0
                        0E2E: create_render_object_to_char_bone Ped_sport_2 model 2913 bone 24 offset 0 0 0 rotation 0 0 0 store_to render_obj
                    end

                    0860: link_actor Ped_sport_2 to_interior 1@
                    0E24: fix_char Ped_sport_2 ground 1 brightness 1 and_fade_in 0

                    0E01: create_object_no_save 2629 at 759.3818 -71.4446 999.6 offset 0 ground 0 to benchpress_obj
                    0177: set_object benchpress_obj Z_angle_to 90.0

                    0E01: create_object_no_save 2627 at 759.4095 -68.4505 999.6 offset 0 ground 0 to run_obj
                    0177: set_object run_obj Z_angle_to 90.0

                    0E01: create_object_no_save 2631 at 762.1722 -60.0817 999.7859 offset 0 ground 0 to mat_obj
                    0177: set_object mat_obj Z_angle_to 90.0

                    0E01: create_object_no_save 2630 at 774.7246 -70.9072 999.6094 offset 0 ground 0 to bike_obj
                    0177: set_object bike_obj Z_angle_to 270.0
                end


                0566: link_object benchpress_obj to_interior 1@
                0566: link_object run_obj to_interior 1@
                0566: link_object mat_obj to_interior 1@
                0566: link_object bike_obj to_interior 1@
                
                060A: create_decision_maker_type 0 store_to 1@ // decision\allowed\m_.ped files
                060B: set_actor Ped_sport_2 decision_maker_to 1
                060B: set_actor Ped_sport_1 decision_maker_to 1

                model.Destroy(96)
                model.Destroy(184)
                model.Destroy(2631)
                model.Destroy(2627)
                model.Destroy(2629)
                model.Destroy(2630)
                model.Destroy(3071)
                model.Destroy(2913)

                if or
                    select == 1
                    select == 3
                then
                    0812: AS_actor Ped_sport_1 perform_animation "gym_tread_jog" IFP "GYMNASIUM" framedelta 1000.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                end
                if or
                    select == 2
                    select == 4
                then
                    0209: 1@ = random_int_in_ranges 1 3
                    if 1@ == 1
                    then 0812: AS_actor Ped_sport_1 perform_animation "gym_bike_faster" IFP "GYMNASIUM" framedelta 1000.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                    else 0812: AS_actor Ped_sport_1 perform_animation "gym_bike_pedal" IFP "GYMNASIUM" framedelta 1000.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                    end
                end
                
                if or
                    select == 1
                    select == 4
                then
                    0812: AS_actor Ped_sport_2 perform_animation "gym_free_A" IFP "Freeweights" framedelta 1000.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                else
                    0812: AS_actor Ped_sport_2 perform_animation "gym_bp_up_A" IFP "benchpress" framedelta 1000.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                end
                
                timera = 0
                timerb = 0
                
                repeat
                wait 0
                if and
                    056D:   actor Ped_sport_1 defined
                    056D:   actor Ped_sport_2 defined
                then
                    0EFF: get_char_simplest_active_task Ped_sport_1 id_to 1@ pointer_to 2@
                    0EFF: get_char_simplest_active_task Ped_sport_2 id_to 2@ pointer_to 3@
                    if or
                        051A:   actor Ped_sport_1 damaged_by_actor $PLAYER_ACTOR
                        051A:   actor Ped_sport_2 damaged_by_actor $PLAYER_ACTOR
                        0118:   actor Ped_sport_1 dead
                        0118:   actor Ped_sport_2 dead
                        not 1@ == 401
                        not 2@ == 401
                    then
                        if or
                            select == 2
                            select == 3
                        then
                            0E2F: delete_render_object render_obj
                        end
                        01C2: remove_references_to_actor Ped_sport_1 // Like turning an actor into a random pedestrian
                        01C2: remove_references_to_actor Ped_sport_2 // Like turning an actor into a random pedestrian
                        repeat
                        wait 0
                        0AAA: 1@ = get_script_struct_named 5@v
                        until 1@ == 0
                        break
                    end
                    
                    080E: get_actor Ped_sport_1 ped_event_to 1@
                    080E: get_actor Ped_sport_2 ped_event_to 2@
                    if or
                        1@ == 49
                        1@ == 9
                        2@ == 49
                        2@ == 9
                    then
                        if or
                            select == 2
                            select == 3
                        then
                            0E2F: delete_render_object render_obj
                        end
                        01C2: remove_references_to_actor Ped_sport_1 // Like turning an actor into a random pedestrian
                        01C2: remove_references_to_actor Ped_sport_2 // Like turning an actor into a random pedestrian
                        repeat
                        wait 0
                        0AAA: 1@ = get_script_struct_named 5@v
                        until 1@ == 0
                        break
                    end
                    
                    080E: get_actor Ped_sport_1 ped_event_to 1@
                    080E: get_actor Ped_sport_2 ped_event_to 2@
                    if or
                        1@ == 15
                        1@ == 31
                        1@ == 59
                        2@ == 15
                        2@ == 31
                        2@ == 59
                    then
                        if or
                            select == 2
                            select == 3
                        then
                            0E2F: delete_render_object render_obj
                        end
                        01C2: remove_references_to_actor Ped_sport_1 // Like turning an actor into a random pedestrian
                        01C2: remove_references_to_actor Ped_sport_2 // Like turning an actor into a random pedestrian
                        repeat
                        wait 0
                        0AAA: 1@ = get_script_struct_named 5@v
                        until 1@ == 0
                        break
                    end
                    
                    if or
                        0457:   player $PLAYER_CHAR aiming_at_actor Ped_sport_1
                        0457:   player $PLAYER_CHAR aiming_at_actor Ped_sport_2
                    then
                        0E83: get_current_char_weaponinfo $PLAYER_ACTOR store_to 1@
                        0E89: get_weaponinfo_fire_type 1@ store_to 2@ //     
                        if or
                            2@ == 1 //  
                            2@ == 3 //   (  ..)
                        then
                            if or
                                select == 2
                                select == 3
                            then
                                0E2F: delete_render_object render_obj
                            end
                            01C2: remove_references_to_actor Ped_sport_1 // Like turning an actor into a random pedestrian
                            01C2: remove_references_to_actor Ped_sport_2 // Like turning an actor into a random pedestrian
                            repeat
                            wait 0
                            0AAA: 1@ = get_script_struct_named 5@v
                            until 1@ == 0
                            break
                        end
                    end

                    if or
                        select == 4
                        select == 1
                    then
                        if
                            timera > 3000
                        then
                            if
                                0611:   actor Ped_sport_2 performing_animation "gym_free_A"
                            then
                                0613: 1@ = actor Ped_sport_2 animation "gym_free_A" time
                                if
                                    1@ > 0.95
                                then
                                    0812: AS_actor Ped_sport_2 perform_animation "gym_free_down" IFP "Freeweights" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                                    wait 300
                                    timera = 1500
                                    continue
                                end
                            end
                            if
                                0611:   actor Ped_sport_2 performing_animation "gym_free_down"
                            then
                                0613: 1@ = actor Ped_sport_2 animation "gym_free_down" time
                                if
                                    1@ > 0.95
                                then
                                    0812: AS_actor Ped_sport_2 perform_animation "gym_free_A" IFP "Freeweights" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                                    wait 300
                                    timera = 0
                                    continue
                                end
                            end
                        end
                        
                    end
                    
                    if or
                        select == 3
                        select == 2
                    then
                        if
                            timera > 3000
                        then
                        
                            if
                                0611:   actor Ped_sport_2 performing_animation "gym_bp_up_A"
                            then
                                0613: 1@ = actor Ped_sport_2 animation "gym_bp_up_A" time
                                if
                                    1@ > 0.95
                                then
                                    0812: AS_actor Ped_sport_2 perform_animation "gym_bp_down" IFP "benchpress" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                                    wait 300
                                    timera = 1500
                                    continue
                                end
                            end
                            if
                                0611:   actor Ped_sport_2 performing_animation "gym_bp_down"
                            then
                                0613: 1@ = actor Ped_sport_2 animation "gym_bp_down" time
                                if
                                    1@ > 0.95
                                then
                                    0812: AS_actor Ped_sport_2 perform_animation "gym_bp_up_A" IFP "benchpress" framedelta 2.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1
                                    wait 300
                                    timera = 0
                                    continue
                                end
                            end
                        end
                    end
                    
                    if or
                        select == 2
                        select == 4
                    then
                        if
                            timerb > 10000
                        then
                            0209: 1@ = random_int_in_ranges 1 3
                            if 1@ == 1
                            then 0812: AS_actor Ped_sport_1 perform_animation "gym_bike_faster" IFP "GYMNASIUM" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                            else 0812: AS_actor Ped_sport_1 perform_animation "gym_bike_pedal" IFP "GYMNASIUM" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                            end
                            timerb = 0
                        end
                    end
                    
                    if or
                        select == 1
                        select == 3
                    then
                        if
                            timerb > 15000
                        then
                            0209: 1@ = random_int_in_ranges 1 4
                            if 1@ == 1
                            then 0812: AS_actor Ped_sport_1 perform_animation "gym_tread_jog" IFP "GYMNASIUM" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                            end
                            if 1@ == 2
                            then 0812: AS_actor Ped_sport_1 perform_animation "gym_tread_sprint" IFP "GYMNASIUM" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                            end
                            if 1@ == 3
                            then 0812: AS_actor Ped_sport_1 perform_animation "gym_tread_walk" IFP "GYMNASIUM" framedelta 2.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1
                            end
                            timerb = 0
                        end
                    end
                
                end
                0AAA: 1@ = get_script_struct_named 5@v
                until 1@ == 0
                
                if 056D:   actor Ped_sport_1 defined
                then 009B: destroy_actor Ped_sport_1
                end
                if 056D:   actor Ped_sport_2 defined
                then 009B: destroy_actor Ped_sport_2
                end
                if 03CA:   object benchpress_obj exists
                then 0108: destroy_object benchpress_obj
                end
                if 03CA:   object run_obj exists
                then 0108: destroy_object run_obj
                end
                if 03CA:   object mat_obj exists
                then 0108: destroy_object mat_obj
                end
                if 03CA:   object bike_obj exists
                then 0108: destroy_object bike_obj
                end
                04EF: release_animation "Freeweights"
                04EF: release_animation "GYMNASIUM"
                04EF: release_animation "benchpress"
                0A93: terminate_this_custom_script
            end
        end
0A93: terminate_this_custom_script


